import request from "@/utils/request";

const FAMILY_BASE_URL = "/api/v1/person";

const PersonAPI = {
  /**
   * 获取家族分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  getPage(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取家族树形列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 家族树形列表
   */
  getList(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取家族树形列表
   * @param {String} personId 查询参数
   * @returns {Promise} 家族树形列表
   */
  getTreeData(personId) {
    return request({
      url: `${FAMILY_BASE_URL}/getTreeData`,
      method: "get",
      params: { personId: personId },
    });
  },

  getTreeDataForNine(personId) {
    return request({
      url: `${FAMILY_BASE_URL}/getTreeDataForNine`,
      method: "get",
      params: { personId: personId },
    });
  },

  /**
   * 获取家族树形列表
   * @param {String} personId 查询参数
   * @returns {Promise} 家族树形列表
   */
  getTreeDataForFour (personId) {
    return request({
      url: `${FAMILY_BASE_URL}/getTreeDataForFour`,
      method: "get",
      params: { personId: personId },
    });
  },


  /**
   * 获取家族下拉数据源
   * @param {boolean} [onlyParent] 是否只获取父级家族
   * @returns {Promise} 家族下拉数据源
   */
  getOptions(onlyParent) {
    return request({
      url: `${FAMILY_BASE_URL}/options`,
      method: "get",
      params: { onlyParent: onlyParent },
    });
  },

  /**
   * 获取家族表单数据
   * @param {string} id 家族ID
   * @returns {Promise} 家族表单数据
   */
  getFormData(id) {
    return request({
      url: `${FAMILY_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   * 获取家族表单数据
   * @param {string} code 家族ID
   * @returns {Promise} 家族表单数据
   */
  getFormDataByCode(code) {
    return request({
      url: `${FAMILY_BASE_URL}/${code}/formByCode`,
      method: "get",
    });
  },

  /**
   * 添加家族
   * @param {Object} data 家族表单数据
   * @returns {Promise} 请求结果
   */
  create(data) {
    return request({
      url: `${FAMILY_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 添加家族
   * @param {Object} data 家族表单数据
   * @returns {Promise} 请求结果
   */
  createByType(data) {
    return request({
      url: `${FAMILY_BASE_URL}/saveByType`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改家族
   * @param {string} id 家族ID
   * @param {Object} data 家族表单数据
   * @returns {Promise} 请求结果
   */
  update(id, data) {
    return request({
      url: `${FAMILY_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 删除家族
   * @param {string} id 家族ID
   * @returns {Promise} 请求结果
   */
  deleteByIds(id) {
    return request({
      url: `${FAMILY_BASE_URL}/${id}`,
      method: "delete",
    });
  },

  /**
   * 全局搜索接谱成员
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 请求结果
   */
  searchGlobal(userId) {
    return request({
      url: `${FAMILY_BASE_URL}/linkFamilyByPerson`,
      method: "get",
      params: { personId: userId },
    });
  },

  /**
   * 创建接谱
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 请求结果
   */
  connectBranch(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/family-relation`,
      method: "post",
      data: queryParams,
    });
  },
  /**
   * 根据家族ID分页获取接谱申请列表
   * @param {Object} queryParams 查询参数，需包含familyId等
   * @returns {Promise} 接谱申请分页列表
   */
  getFamilyJoinListByFamilyId(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/family-relation/pageByFamilyId`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取接谱申请列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 接谱申请分页列表
   */
  getFamilyJoinList(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/family-relation/page`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 审核接谱申请
   * @param {Object} data 审核数据
   * @returns {Promise} 请求结果
   */
  auditFamilyJoin(data) {
    return request({
      url: `${FAMILY_BASE_URL}/family-relation/audit/${data.id}`,
      method: "put",
      params: { auditRemark: data.remark, status: data.status },
    });
  },
};

export default PersonAPI;
